package com.example.demo.day0229;

import java.io.File;
import java.io.IOException;

public class DemoFile {
    public static void main(String[] args) {
        File f = new File("D:\\File\\tt.txt");//对象f就是tt.txt文件，
        File f1 = new File("D:"+File.separator+"File\\tt.txt");//也可以使用File.separator作为文件分隔符
        File f2 = new File("D:\\File","tt.txt");//f1也是tt.txt文件，但是这种创建对象的方式较少使用

        System.out.println(f.getName());//获取当前文件名
        System.out.println(f.getPath());//h获取当前文件或文件夹的路径

        File f3 = new File("src/main/java/com.example.demo/day0229");//用相对路径创建对象

        System.out.println(f3.getPath());//获取的路径是new File时所写的路径
        System.out.println(f3.getAbsolutePath());//获取当前文件的绝对路径

        System.out.println(f3.getParentFile());//返回当前文件的父级路径



        System.out.println(f3);
        System.out.println(f3.getAbsoluteFile());//返回用当前的文件的绝对路径构建的file对象

        f.renameTo(new File("D:\\File\\tt1.txt"));//给文件改名

        File f4 = new File("D:\\File\\tt1.txt");
        System.out.println(f4.exists());//判断文件是否存在

        File f5 = new File("D:\\File\\tt1.txt");
        System.out.println(f5.canWrite());//判断文件是否可写
        System.out.println(f5.canRead());//判断文件是否可读

        System.out.println(f5.isFile());//判断当前的File对象是不是文件
        System.out.println(f5.isDirectory());//判断当前的File对象是不是文件夹或目录

        System.out.println(f5.lastModified());//获取文件的最后修改时间，返回的是一个毫秒数
        System.out.println(f5.length());//返回文件的长度，单位为字节数

        File f6 = new File("D:\\File\\tt2.txt");
        System.out.println(f6.exists());
        if (!f6.exists()){
            try {
                f6.createNewFile();//使用createNewFile创建一个新文件，但需要抛出一个IO系统的异常
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        f6.delete();//删除File对象的文件
        File f7 = new File("D:\\File\\cc");
        f7.mkdir();//创建单层目录，如果使用该方法创建多层目录就需要多次执行该方法

        File f8 = new File("D:\\File\\a\\b\\c");
        f8.mkdirs();//该方法可以直接创建多层目录
         File f9 = new File("D:\\File");
        System.out.println(f9.list());
        String[] str = f9.list();//f9.list返回的是当前文件夹的子集名称，包括目录和文件
        for (String s : str){//通过foreach遍历f9.list并打印出来
            System.out.println(s);
        }
        File[] fs = f9.listFiles();//f9.listFile返回的是当前文件夹的子集的file对象，包括目录和文件
        for (File ff : fs){//通过foreach遍历f9.listFile并打印出来
            System.out.println(ff);
        }


    }
}
